<?php

$MAXLIST = 1000;

// Importa la facturación de una BD de epGestv2
// Se le pasa ambos links, el nombre de la BD antigua y el ID de la empresa creada en la BD nueva
function importarFacturacionEjercicio($db_name, $id_ejercicio) {

	global $db;
	global $DATABASE_LOCAL;

	$remote_db = new Database ( $_REQUEST['host'], $_REQUEST['usuario'], $_REQUEST['pass'], $db_name, "" );
	if (!$remote_db->connect())
	{
		die("<b>ERROR:</b> Ha sido imposible conectar con la base de datos de epgest!");
	}		

	mysql_select_db($db_name);

	$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM facturacion ORDER BY id ASC";

	$documentos = $remote_db->fetch_all_array ( $sql );	
	$total_documentos = $db->found_rows();
	$contador_documentos = 0;

	mysql_select_db($DATABASE_LOCAL); // Volvemos a la BD local para insertar los datos

	foreach ($documentos as $doc) {

		$sql = "
			   INSERT INTO " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion SET
			  `ejercicio_id` = '". $remote_db->escape($id_ejercicio) ."',
			  `doc_parent_id` = 0,
			  `tipo_id` = '". $remote_db->escape($doc['TipoDoc']) ."',
			  `serie_id` = '". $remote_db->escape($doc['SerieID']) ."',
			  `referencia` = '". $remote_db->escape($doc['DocNum']) ."',
			  `metodo_pago_id` = 0,
			  `fecha` = '". $remote_db->escape($doc['DocFecha']) ."',
			  `codigo_cliente` = '". $remote_db->escape($doc['CodCliente']) ."',
			  `nombre_fiscal` = '". $remote_db->escape($doc['NombreFiscal']) ."',
			  `nombre_comercial` = '". $remote_db->escape($doc['NombreComercial']) ."',
			  `cif` = '". $remote_db->escape($doc['Cif']) ."',
			  `direccion_envio_id` = 0,
			  `direccion` = '". $remote_db->escape($doc['Direccion']) ."',
			  `codigo_postal` = '". $remote_db->escape($doc['CodPostal']) ."',
			  `localidad` = '". $remote_db->escape($doc['Localidad']) ."',
			  `provincia` = '". $remote_db->escape($doc['Provincia']) ."',
			  `pais_id` = 0,
			  `comentarios` = '". $remote_db->escape($doc['Comentarios']) ."',
			  `base` = '". $remote_db->escape($doc['Base']) ."',
			  `valor_iva` = '". $remote_db->escape($doc['ValorIVA']) ."',
			  `total_iva` = '". $remote_db->escape($doc['TotalIVA']) ."',
			  `total` = '". $remote_db->escape($doc['Total']) ."',
			  `usuario_id` = 1,
			  `date_add` = '". $remote_db->escape($doc['DocFecha']) ."',
			  `date_upd` = '". $remote_db->escape($doc['DocFecha']) ."'
		";

		$db->query($sql);
		$documento_id = $db->get_last_insert_id(); // guardamos el ID insertado ( de la BD actual)
		$contador_documentos++;

		// Ahora se añaden los items del documento
		mysql_select_db($db_name);
		$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM facturacion_list WHERE doc_id = '". $remote_db->escape($doc['id']) ."' ORDER BY id";
		$items = $remote_db->fetch_all_array ( $sql );	
		$total_items = $remote_db->found_rows();

		mysql_select_db($DATABASE_LOCAL); // Volvemos a la BD local para insertar los datos
		foreach ($items as $item) {
			$sql = "	
			   INSERT INTO " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion_items SET		  		  		  
			   doc_id = ". $documento_id .",
			  `tipo_id` = '". $db->escape($item['tipo']) ."',
			  `estado` = 0,
			  `referencia` = '". $db->escape($item['Ref']) ."',
			  `descripcion` = '". $db->escape($item['descripcion']) ."',
			  `cantidad` = '". $db->escape($item['Cantidad']) ."',
			  `subtotal` = '". $db->escape($item['SubTotal']) ."',
			  `descuento` = 0,
			  `total` = '". $db->escape($item['Total']) ."'
			";
			
			$db->query($sql);
		}

	}

	echo "- Facturas: Importadas ". $contador_documentos ." de ". $total_documentos ."<br>";

}

					$EPGEST_BASE_DB = "epgestv2";
				
					// Datos de epTask
					//--------------------------------------------------------------------------------------------------------------------
					
					$remote_db = new Database ( $_REQUEST['host'], $_REQUEST['usuario'], $_REQUEST['pass'], $DATABASE_REMOTA, "" );
					if (!$remote_db->connect())
					{
						die("<b>ERROR:</b> Ha sido imposible conectar con la base de datos de epgest!");
					}	

					mysql_select_db($EPGEST_BASE_DB); // FIX: BD general de empresas (epgestv2)
					
					// Primero contamos todos los proyectosç
					$contador_empresas = $remote_db->query_first ( "SELECT COUNT(*) as total FROM empresas ORDER BY id LIMIT 1" );
					$total_empresas = $contador_empresas['total'];
					
					echo "Total: ". $total_empresas." empresas<br>";
										
					echo "<br>";
					
					// Recuperamos todas las empresas
					$sql = "SELECT * FROM empresas ORDER BY id ASC";
					
					echo $sql ."<br>";
					
					$empresas = $remote_db->fetch_all_array ( $sql );

					echo "<pre>";
					//var_dump($empresas);
					echo "</pre>";
					
					// Vaciamos las tablas locales de destino
					mysql_select_db($DATABASE_LOCAL);
					
					// Empresas
					$db->query("TRUNCATE TABLE " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa");					
					$db->query("TRUNCATE TABLE " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa_ejercicios");
					$db->query("TRUNCATE TABLE " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa_series_contadores");
					
					// Facturacion
					$db->query("TRUNCATE TABLE " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion");
					$db->query("TRUNCATE TABLE " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epfacturacion_facturacion_items");										
					
					foreach ($empresas as $empresa)
					{
						echo "<b>Empresa: ". $empresa['Nombre'] ."</b><br>";

						// Primero se busca el CIF.  Si no existe, se crea una empresa nueva con su ejercicio correspondiente.
						// Si ya existe, NO se añade la empresa y si añade simplemente el ejercicio

						mysql_select_db($DATABASE_LOCAL);

						echo "Buscamos si la empresa existe..<br>";
						$check_empresa = $db->query_first("SELECT COUNT(*) as total, id FROM " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa WHERE cif = '". $db->escape($empresa['Cif']) ."' GROUP BY Cif");

						if ($check_empresa['total'] > 0) {
							// La empresa ya existe. Solo se añade el ejercicio
							// Recuperamos el ejercicio y lo creamos. Recuperamos su ID y se lo asignamos al registro predeterminada de empresa
							echo "La empresa existe. Insertamos el ejercicio <b>". $empresa['ejercicio'] ."</b> (empresa id: ". $check_empresa['id'] .")<br>";
							$sql = "
								INSERT INTO " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa_ejercicios
								SET
								empresa_id = '". $db->escape($check_empresa['id']) ."',
								ano = '". $db->escape($empresa['ejercicio']) ."'
							";
							
							echo $sql ."<br>";

							$db->query($sql);
							$last_ejercicio_id = $db->get_last_insert_id();

							// Es el ultimo ejercicio añadido. Se lo metemos como predeterminada a la empresa
							echo "añadimos ejercicio por defecto (id_ejercicio: ". $last_ejercicio_id .", id_empresa: ". $check_empresa['id'] .")<br>";
							$sql = "UPDATE " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa SET ejercicio_id = ". $last_ejercicio_id ." WHERE id = ". $check_empresa['id'] ." LIMIT 1";
							$db->query($sql);

							// Cada ejercicio que se añade tienes sus propios contadores.
							// Seleccionamos la BD correspondiente a la empresa (BD antigua) y recuperamos sus contadores para añadirlos a la nueva BD.
							echo "(1): BD: ". $empresa['database_name'] ."<br>";
							mysql_select_db($empresa['database_name']);
							$contadores_old = $remote_db->fetch_all_array("SELECT * FROM contadores_facturacion ORDER BY serie_id ASC");

							mysql_select_db($DATABASE_LOCAL); // Volvemos a la BD local (nueva)
							foreach ($contadores_old as $cont) {
								$sql = "INSERT INTO " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa_series_contadores SET 
										ejercicio_id 	= ". $last_ejercicio_id .",									
										serie_id 		= ". $cont['serie_id'] .", 
										facturas 		= ". $cont['facturas'] .", 
										presupuestos 	= ". $cont['presupuestos'] .", 
										albaranes 		= ". $cont['albaranes'] .", 
										proforma 		= ". $cont['proforma'] .", 
										abonos 			= ". $cont['abonos'] .", 
										recibos 		= ". $cont['recibos'] .", 
										orden_compra 	= ". $cont['pedidosprov'] ."";

								echo $sql ."<br>";
								$db->query($sql);
							}

							// Ahora se añaden los documentos de facturación de este ejercicio
							importarFacturacionEjercicio($empresa['database_name'], $last_ejercicio_id);

						}
						else
						{
							// La empresa no xiste. Se añade como nueva
							// Antes de insertar la empresa, las marcamos todas como predeterminada = 0. Luego de insertar, la marcamos como predeterminada = 1.
							// Esto asegura que la ultima añadida será la predeterminada (logicamente debería ser...)
							$db->query("UPDATE " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa SET predeterminada = 0");
							
							// Insertamos el cliente en local
							$sql = "
								INSERT INTO " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa
								SET
								predeterminada = 1,
								ejercicio_id = 0,
								nombre = '". $db->escape($empresa['Nombre']) ."',
								cif = '". $db->escape($empresa['Cif']) ."',
								direccion = '". $db->escape($empresa['Direccion']) ."',
								codigo_postal = '". $db->escape($empresa['CodPostal']) ."',
								localidad = '". $db->escape($empresa['Localidad']) ."',
								provincia = '". $db->escape($empresa['Provincia']) ."',
								email = '". $db->escape($empresa['Email']) ."',
								web_url = '". $db->escape($empresa['Web']) ."',
								telefono = '". $db->escape($empresa['Telefono']) ."',
								fax = '". $db->escape($empresa['Fax']) ."',
								movil = '". $db->escape($empresa['Movil']) ."',
								registro_mercantil = '". $db->escape($empresa['registro_mercantil']) ."'
							";
													
							$db->query($sql);												
							$last_empresa_id = $db->get_last_insert_id();

							// Insertamos su ejercicio
							$sql = "
								INSERT INTO " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa_ejercicios
								SET
								empresa_id = ". $last_empresa_id .",
								ano = '". $db->escape($empresa['ejercicio']) ."'
							";					

							$db->query($sql);
							$last_ejercicio_id = $db->get_last_insert_id();

							// Marcamos el registro como predeterminada = 1 y el id del ejercicio recien añadido
							$db->query("UPDATE " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa SET predeterminada = 1, ejercicio_id = ". $last_ejercicio_id ." WHERE id = ". $last_empresa_id ." LIMIT 1");

							// Cada ejercicio que se añade tienes sus propios contadores.
							// Seleccionamos la BD correspondiente a la empresa (BD antigua) y recuperamos sus contadores para añadirlos a la nueva BD.
							echo "(2): BD: ". $empresa['database_name'] ."<br>";
							mysql_select_db($empresa['database_name']);
							$contadores_old = $remote_db->fetch_all_array("SELECT * FROM contadores_facturacion ORDER BY serie_id ASC");

							mysql_select_db($DATABASE_LOCAL); // Volvemos a la BD local (nueva)
							foreach ($contadores_old as $cont) {
								$sql = "INSERT INTO " . _CONFIG_MYSQL_TABLE_PREFIX_ . "epempresa_series_contadores SET 
										ejercicio_id 	= ". $last_ejercicio_id .",									
										serie_id 		= ". $cont['serie_id'] .", 
										facturas 		= ". $cont['facturas'] .", 
										presupuestos 	= ". $cont['presupuestos'] .", 
										albaranes 		= ". $cont['albaranes'] .", 
										proforma 		= ". $cont['proforma'] .", 
										abonos 			= ". $cont['abonos'] .", 
										recibos 		= ". $cont['recibos'] .", 
										orden_compra 	= ". $cont['pedidosprov'] ."";

								echo $sql ."<br>";
								$db->query($sql);
							}							

							// Ahora se añaden los documentos de facturación de este ejercicio
							importarFacturacionEjercicio($empresa['database_name'], $last_ejercicio_id);							
						}
						
					}					

					$remote_db->close();	

?>